home *** CD-ROM | disk | FTP | other *** search
/ OpenGL Superbible (2nd Edition) / OpenGL SuperBible e2.iso / tools / GLUT-3.7 / FAQ.glut < prev    next >
Encoding:
Text File  |  1998-08-12  |  30.8 KB  |  803 lines

  1.  
  2. An on-line (possibly more up-to-date) version of this GLUT Frequently
  3. Asked Questions list can be found at:
  4.  
  5.   http://reality.sgi.com/mjk_asd/glut3/glut-faq.html
  6.  
  7. Here are few questions I expect to be frequently asked about GLUT 3.5.
  8. First, here are tag-line summaries of the question subject matter.
  9.  
  10. Q1:   Problems building GLUT.  I've tried to use the "mkmkfiles.imake"
  11.       script to generate Makefiles so I can build GLUT, but it doesn't
  12.       seem to work.  What should I try?
  13.  
  14. Q2:   More GUI features.  GLUT needs improved menus, dialog boxes,
  15.       scrollbars, text entry fields, etc. to be useful to me.  What
  16.       should I do?
  17.  
  18. Q3:   New with GLUT 3.0.  What new things are in GLUT 3.0?
  19.  
  20. Q4:   GLUT for Windows 95 and NT.  Is there a version of GLUT for
  21.       Windows NT or Windows 95?
  22.  
  23. Q5:   GLUT for OS/2.  Is there a version of GLUT for OS/2?
  24.  
  25. Q6:   GLUT for Power Macintosh.  Is there a version of GLUT for the
  26.       Power Macintosh?
  27.  
  28. Q7:   GLUT 3.0 incompatibilities.  I'm hesitant about upgrading to GLUT
  29.       3.0 since I've got things working will with GLUT 2.3.  Is the
  30.       transition painful?
  31.  
  32. Q8:   GLUT and Motif.  So how do I use GLUT and Motif together?
  33.  
  34. Q9:   aux convension to GLUT.  I have a bunch of simple OpenGL programs
  35.       using the aux toolkit descibed in the OpenGL Programming Guide
  36.       (the "red" book).  Is there an easy way to convert them to GLUT?
  37.  
  38. Q10:  SGI N32 and 64-bit support.  I have IRIX 6.2 (or 6.1) and I'd
  39.       like to write GLUT programs run in true 64-bit and/or benefit
  40.       from the recent, faster MIPS processors.  How do I build GLUT to
  41.       support these newer application binary interfaces (ABIs)?
  42.  
  43. Q11:  FORTRAN and GLUT.  I'd like to write FORTRAN programs using GLUT
  44.       and OpenGL.  How do I use GLUT with FORTRAN?
  45.  
  46. Q12:  Sophisticated input devices.  I'd like to use the sophisticated
  47.       input devices that GLUT supports.  What should I know about this?
  48.  
  49. Q13:  GLUT and Open Inventor.  Can I use GLUT and Open Inventor?
  50.  
  51. Q14:  GLUT, Sun, and Overlays.  I have Sun workstation, and it is
  52.       supposed to support overlays.  So why does GLUT not use them?
  53.  
  54. Q15:  The GLUT stroke font.  The stroke font used for GLUT looks
  55.       familar.  Where did it come from?
  56.  
  57. Q16:  My book about GLUT.  I read in the NOTICE file that you are
  58.       writing a book on programming OpenGL for the X Window System.
  59.       Where can I get it?
  60.  
  61. Q17:  GLUT and Microsoft portability.  You mention an unnamed bu "very
  62.       large window system software vendor" as the reason portable GLUT
  63.       programs should not directly include <GL/gl.h> and <GL/glu.h>
  64.       directly.  What's the vendor and what are the details?
  65.  
  66. Q18:  GLUT and networking.  I want my GLUT program to read and send
  67.       information over a socket to some other program.  How do I do
  68.       this in in GLUT?
  69.  
  70. Q19:  Asking GLUT questions.  Where's the best place to ask questions
  71.       about GLUT or OpenGL?  Can I just email them to you?
  72.  
  73. Q20:  Free OpenGL.  My workstation doesn't have OpenGL.  Where can I get a
  74.       free copy to use with GLUT?
  75.  
  76. Q21:  GLUT overlay example code.  I hear GLUT 3.0 has overlay support.
  77.       Where is an example?
  78.  
  79. Q22:  BadMatch errors running GLUT programs.  I get BadMatch X protocol
  80.       errors when I run GLUT programs. What gives?
  81.  
  82. Q23:  New in GLUT 3.1.  What is new in GLUT 3.1?
  83.  
  84. Q24:  Shared libraries for Linux.  How do I make Linux shared libraries
  85.       for GLUT?
  86.  
  87. Q25:  New in GLUT 3.2.  What is new in GLUT 3.2?
  88.  
  89. Q26:  GLUT API man pages.  I've heard GLUT 3.2 has man pages.  How do I
  90.       use them?
  91.  
  92. Q27:  Fast window repair for Mesa.  What is the MESA_SWAP_HACK in GLUT
  93.       3.2?  How does it help Mesa users avoid excessive window redraws?
  94.  
  95. Q28:  Advanced GLUT example .rgb image file.  I try to run the examples in
  96.       progs/advanced but they don't work for lack of image files.
  97.       Where can I get those files?
  98.  
  99. Q29:  IRIX 6.3 and 6.4 fast atoms support issues for older IRIX
  100.       releases.  Why doesn't GLUT programs compiled on IRIX 6.4 or 6.3
  101.       work earlier releases?
  102.  
  103. Q30:  GLUT for the Power Macintosh.  Can I get a version of GLUT for the
  104.       Power Macintosh?
  105.  
  106. Q31:  New in GLUT 3.4.  What is new in GLUT 3.4?
  107.  
  108. Q32:  Cosmo3D beta and GLUT problem.  I installed SGI's Cosmo3D beta and
  109.       GLUT, and I'm having problems compiling GLUT programs.  What gives?
  110.  
  111. Q33:  New in GLUT 3.5.  What is new in GLUT 3.5?
  112.  
  113. Q34:  Using the precompiled GLUT DLLs with Borland compilers.  How do I use
  114.       the precompiled Win32 GLUT DLLs with Borland compilers?
  115.  
  116. Q35:  Using GLUT with C++.  Are there any C++ wrappers for GLUT?
  117.  
  118. Q36:  Avoiding the Console window for Win32 GLUT programs.  How do you avoid
  119.       the Console window appearing when you compiler a Win32 GLUT
  120.       application with Microsoft compilers?
  121.  
  122. Q37:  New in GLUT 3.6.  What is new in GLUT 3.6?
  123.  
  124. Q38:  O2 build problmes with glXChannelRectSyncSGIX.  On my IRIX 6.3 SGI O2
  125.       workstation, why do I get errors about "glXChannelRectSyncSGIX"
  126.       being unresolved building certain GLUT examples?
  127.  
  128. Q39:  Using GLUT with Microsoft OpenGL 1.1 and compiling GLUT with
  129.       Borland compilers causes GLUT applications to generates floating
  130.       point exceptions.  What can be done?
  131.  
  132. Q40:  Using GLUT with SGI OpenGL for Windows and compiling with
  133.       Borland compilers results in linking problems.  What can be
  134.       done?
  135.  
  136. Q41:  What is GameGLUT?
  137.  
  138. --
  139.  
  140. Q1:  I've tried to use the "mkmkfiles.imake" script to generate
  141.      Makefiles so I can build GLUT, but it doesn't seem to work.  What
  142.      should I try?
  143.  
  144. A1:  While Imakefiles are supposted to be system independent (hence
  145.      the "I"), the commands to translate Imakefiles into Makefiles
  146.      varies from system to system.  The X Consortium provides a command
  147.      called "xmkmf", but vendors do not put this command in a
  148.      consistent place.  The "mkmkfiles.imake" script tries its best to
  149.      generate Makefiles, but may get confused by different vendors
  150.      configurations that I am not aware of.
  151.  
  152.      It is also possible the imake configuration files (typically
  153.      located at /usr/lib/X11/config) are buggy or from a very old
  154.      version of X.
  155.  
  156.      SGI users can benefit from using the "mkmkfile.sgi" script that
  157.      uses SGI's parallel make, though "mkmkfiles.imake" should work
  158.      too.
  159.  
  160. --
  161.  
  162. Q2:  GLUT needs improved menus, dialog boxes, scrollbars, text
  163.      entry fields, etc. to be useful to me.  What should I do?
  164.  
  165. A2:  GLUT does not pretend to be a full-featured graphical user
  166.      interface toolkit.
  167.  
  168.      You _could_ write these sorts of GUI objects using GLUT and OpenGL
  169.      if you needed to.  The other alternative is to use Motif or
  170.      whatever full featured toolkit you have.
  171.  
  172.      A little toolkit called micro-UI uses OpenGL for rendering and is
  173.      based on GLUT.  The toolkit was developed by Tom Davis.  See the
  174.      README.mui file the accompanies GLUT 3.5 and up.
  175.  
  176. --
  177.  
  178. Q3:  What new things are in GLUT 3.0?
  179.  
  180. A3:  See README.glut3 or read The OpenGL Utility (GLUT) Programming
  181.      Interface document.
  182.  
  183. --
  184.  
  185. Q4:  Is there a version of GLUT for Windows NT or Windows 95?
  186.  
  187. A4:  As of GLUT 3.5, GLUT now builds for both Win32 and X11 window
  188.      systems.  Much thanks to Nate Robins.  See the README.win file
  189.      contained in GLUT 3.5 for details.  GLUT 3.6 improved the Win32
  190.      GLUT support considerably.
  191.  
  192. --
  193.  
  194. Q5:  Is there a version of GLUT for OS/2?
  195.  
  196. A5:  Yes.  I believe a version based on GLUT 2.x is distributed on an
  197.      OS/2 OpenGL developer's CD-ROM.
  198.  
  199.      You may have reasonable luck porting the Win32 version of the
  200.      GLUT 3.6 distribution to OS/2.  If you manage to do this, please
  201.      contact me.
  202.  
  203. --
  204.  
  205. Q6:  Is there a version of GLUT for the Power Macintosh?
  206.  
  207. A6:  Conix Graphics supplies GLUT 3.5 with their Macintosh OpenGL
  208.      implementation.  See http://www.conix3d.com.
  209.  
  210.      Was told by Template Graphics that an incomplete version of
  211.      GLUT had been developed for their OpenGL product for the Power
  212.      Macintosh.  I am not sure if it was ever completed or made
  213.      available.
  214.  
  215.  
  216.  
  217. --
  218.  
  219. Q7:  I'm hesitant about upgrading to GLUT 3.0 since I've got things
  220.      working will with GLUT 2.3.  Is the transition painful?
  221.  
  222. A7:  I do not believe so.  There are two changes worth noting that
  223.      _may_ affect programs you have written.
  224.  
  225.      First, you need a display callback registered before your display
  226.      your windows on the screen.  It did not make sense for this to not
  227.      be true.  In all likeihood, this should not affect your GLUT
  228.      programs if they written well.
  229.  
  230.      Second, you can no longer change, create, or destroy menus while
  231.      pop-up menus are in use.  Before, you could do this, but it meant
  232.      a menu might be changed while in use.  It was near impossible to
  233.      describe what should happen in the case of menus being changed
  234.      while in use that was likely to be portable to the way other
  235.      window systems handled menus, so I made the practice illegal.
  236.  
  237.      You can register a menu status callback to know when menus become
  238.      used and unused to avoid changing menus while they are in use.
  239.  
  240.      For more details about what has changed, see the CHANGES file.
  241.  
  242. --
  243.  
  244. Q8:  So how do I use GLUT and Motif together?
  245.  
  246. A8:  You don't.  To make GLUT simple and easy-to-program, GLUT
  247.      supplies its own event processing loop.  This makes it nearly
  248.      impossible to combine GLUT and Motif.  If you want Motif, you
  249.      probably want a full-featured toolkit, and you ship skip GLUT and
  250.      implement your application directly in Motif.
  251.  
  252. --
  253.  
  254. Q9:  I have a bunch of simple OpenGL programs using the aux toolkit
  255.      descibed in the OpenGL Programming Guide (the "red" book).  Is
  256.      there an easy way to convert them to GLUT?
  257.  
  258. A9:  In the progs/redbook directory, there is a script named
  259.      aux2glut.sed  It will give you a good start at converting simple
  260.      aux calls to their GLUT equivalents.  It is a good start, but
  261.      you'll still have to hand edit some things.
  262.  
  263.      Here's a usage example:
  264.  
  265.      sed -f aux2glut.sed < aux_prog. > glut_prog.c
  266.  
  267.      Note that the second edition of the OpenGL Programming Guide uses
  268.      GLUT and not the aux toolkit.
  269.  
  270. --
  271.  
  272. Q10: I have IRIX 6.2 (or 6.1) and I'd like to write GLUT programs
  273.      run in true 64-bit and/or benefit from the recent, faster MIPS
  274.      processors.  How do I build GLUT to support these newer
  275.      application binary interfaces (ABIs)?
  276.  
  277. A10: See README.irix6
  278.  
  279. --
  280.  
  281. Q11: I'd like to write FORTRAN programs using GLUT and OpenGL.  How
  282.      do I use GLUT with FORTRAN?
  283.  
  284. A11: GLUT does have a FORTRAN language binding.
  285.  
  286.      For instructions for building a binding library for Silicon
  287.      Graphics workstations, see README.fortran
  288.  
  289.      If you want to use GLUT and OpenGL or Mesa on with Fortran on
  290.      non-SGI systems, I recommend that you check, William Mitchell's
  291.      f90gl home page: http://math.nist.gov/f90gl/
  292.  
  293. --
  294.  
  295. Q12: I'd like to use the sophisticated input devices that GLUT
  296.      supports.  What should I know about this?
  297.  
  298. A12: GLUT uses the X Input extension to talk to these devices.  Because
  299.      the X Input extension gives a framework for supporting input
  300.      devices, but does not manadate how particular devices are
  301.      supported, it is possible that each vendor supports the same input
  302.      devices differently.
  303.  
  304.      GLUT as implemented supports SGI's means of advertising the
  305.      tablet, dial & button box, and Spaceball devices.  I am not sure
  306.      how other vendors support these devices.  For the details of SGI's
  307.      support for these devices, see README.xinput  Since there is no
  308.      benefit in each vendor supporting these same devices in a
  309.      different an incompatible way, I encourage other vendors to
  310.      implement their devices in this same manner.
  311.  
  312. --
  313.  
  314. Q13: Can I use GLUT and Open Inventor?
  315.  
  316. A13: Yes.  See the README.inventor file.  Also, some source code
  317.      examples can be found at progs/inventor
  318.  
  319.      Because the Open Inventor development enviornment is not supported
  320.      on all systems, the Inventor example programs are not built by
  321.      default, and the Makefile there only support SGI systems.
  322.  
  323. --
  324.  
  325. Q14: I have Sun workstation, and it is supposed to support overlays.
  326.      So why does GLUT not use them?
  327.  
  328. A14: GLUT uses the SERVER_OVERLAY_VISUALS convention that advertises
  329.      overlay visuals.  Most major workstation vendors support this
  330.      convention (DEC, HP, IBM, SGI), but Sun only support the
  331.      SERVER_OVERLAY_VISUALS in their latest Creator 3D hardware.
  332.  
  333. --
  334.  
  335. Q15: The stroke font used for GLUT looks familar.  Where did it come
  336.      from?
  337.  
  338. A15: The data for the "stroke roman" font is lifted from the X11R5
  339.      PEX sample implementation.
  340.  
  341. --
  342.  
  343. Q16: I read in the NOTICE file that you are writing a book on
  344.      programming OpenGL for the X Window System.  Where can I get it?
  345.  
  346. A16: My book titled "Programming OpenGL for the X Window System" was
  347.      released in August of 1996.  The book is published by
  348.      Addison-Wesley and the ISBN is 0-201-48359-9.  If you have seen
  349.      the "red" and "blue" OpenGL books, this book looks very similar,
  350.      but has a green cover.  More information can be found at:
  351.  
  352.        http://reality.sgi.com/mjk_asd/OpenGLforX.html
  353.        http://aw.com/devpress/titles/48359.html
  354.  
  355.      The book includes a tutorial chapter introducing the entire GLUT
  356.      API.  Another chapter uses GLUT-based examples to explain various
  357.      OpenGL rendering features.  An appedix describes the GLUT API
  358.      in detail.  If you use GLUT, this book will be very helpful.
  359.  
  360.      A Japanese translation is also available now (ISBN4-7952-9703-7).
  361.  
  362. --
  363.  
  364. Q17: You mention an unnamed bu "very large window system software
  365.      vendor" as the reason portable GLUT programs should not directly
  366.      include <GL/gl.h> and <GL/glu.h> directly.  What's the vendor and
  367.      what are the details?
  368.  
  369. A17: Microsoft.  It's version of <GL/gl.h> requires <windows.h> to be
  370.      included before <GL/gl.h> can be included because of Microsoft
  371.      function declaration conventions.  Sigh.
  372.  
  373. --
  374.  
  375. Q18: I want my GLUT program to read and send information over a socket
  376.      to some other program.  How do I do this in in GLUT?
  377.  
  378. A18: You can not do it currently.  I am considering such support for
  379.      a possible GLUT 4.0.  I'd like to have a portable solution.
  380.  
  381.      What you'd like is a callback that would tell you when a socket is
  382.      ready for reading and writing.  I'm hoping to find a way to
  383.      support this in an operating system independent manner.  Does
  384.      anyone know of a good portable interface for networked bytestream
  385.      connections?
  386.  
  387.      For now, you've got the source code to GLUT and you could hack it
  388.      into GLUT for whatever particular interface your operating system
  389.      provides.
  390.  
  391. --
  392.  
  393. Q19: Where's the best place to ask questions about GLUT or OpenGL?  Can
  394.      I just email them to you?
  395.  
  396. A19: While I may try to return email if I have time, the best place
  397.      is the comp.graphics.api.opengl newsgroup.  This gives a lot more
  398.      people a chance to answer your question and you'll probably get an
  399.      answer much faster than sending me email.  Plus, I may not know
  400.      the answer though someone on the "net" may know it.
  401.  
  402. --
  403.  
  404. Q20: My workstation doesn't have OpenGL.  Where can I get a free copy
  405.      to use with GLUT?
  406.  
  407. A20: OpenGL is licensed by Silicon Graphics and is not available as
  408.      "free" or "public domain" software, but workstation vendors
  409.      typically bundle OpenGL software with their workstation.  However,
  410.      there is a package called Mesa written by Brian Paul at the
  411.      University of Wisconsin that implements the OpenGL API.  (To be
  412.      branded as "OpenGL", an implementation must be licensed _and_ pass
  413.      the Architectural Review Board's conformance suite, so Mesa is not
  414.      an official "OpenGL" implementation.)  Mesa does work with GLUT.
  415.  
  416.      Mesa 2.5 and beyond include GLUT with the Mesa source code
  417.      distribution.
  418.  
  419. --
  420.  
  421. Q21: I hear GLUT 3.0 has overlay support.  Where is an example?
  422.  
  423. A21: Look at progs/examples/zoomdino.c for an example of using overlays
  424.      for rubber-banding and display of a help message, both in the
  425.      overlays.  Also, test/over_test.c exercises all of the overlay
  426.      routines.
  427.  
  428. --
  429.  
  430. Q22: I get BadMatch X protocol errors when I run GLUT programs. What gives?
  431.  
  432. A22: There is a bug in the Solaris 2.4 and 2.5 implementation of
  433. XmuLookupStandardColormap (fixed in Solaris 2.6). When you compile GLUT
  434. on Solaris 2.4 or 2.5, please apply the following patch and compile
  435. with -DSOLARIS_2_4_BUG to workaround the problem. See the comment in
  436. the patch below.  This code is already in GLUT 3.1.
  437.  
  438. *** glut_win.c Wed Apr 24 14:06:08 1996
  439. --- glut_win.c.bad     Wed Apr 24 14:03:58 1996
  440. ***************
  441. *** 398,414 ****
  442.     case TrueColor:
  443.     case DirectColor:
  444.       *colormap = NULL;   /* NULL if RGBA */
  445. - #ifndef SOLARIS_2_4_BUG
  446. -     /* Solaris 2.4 has a bug in its XmuLookupStandardColormap
  447. -        implementation.  Please compile your Solaris 2.4 version 
  448. -        of GLUT with -DSOLARIS_2_4_BUG to work around this bug.
  449. -        The symptom of the bug is that programs will get a
  450. -        BadMatch error from X_CreateWindow when creating a GLUT
  451. -        window because Solaris 2.4 creates a  corrupted
  452. -        RGB_DEFAULT_MAP property.  Note that this workaround
  453. -        prevents Colormap sharing between applications, perhaps
  454. -        leading unnecessary colormap installations or colormap
  455. -        flashing. */
  456.       status = XmuLookupStandardColormap(__glutDisplay,
  457.         vi->screen, vi->visualid, vi->depth, XA_RGB_DEFAULT_MAP,
  458.         /* replace */ False, /* retain */ True);
  459. --- 398,403 ----
  460. ***************
  461. *** 423,429 ****
  462.               return;
  463.             }
  464.       }
  465. - #endif
  466.       /* If no standard colormap but TrueColor, just make a
  467.          private one. */
  468.       /* XXX Should do a better job of internal sharing for
  469. --- 412,417 ----
  470.  
  471. --
  472.  
  473. Q23:  What is new in GLUT 3.1?
  474.  
  475. A23:  GLUT 3.1 is largely a maintence release.  There are some new programs, a
  476.       few minor GLUT library bug fixes, but mostly GLUT 3.1 is to make sure GLUT
  477.       builds cleanly on various platforms like SunOS, HP/UX, Solaris, and Linux.
  478.       See the CHANGES file included in the distribution for more details.
  479.  
  480. --
  481.  
  482. Q24:  How do I make Linux shared libraries for GLUT?
  483.  
  484. A24:  Peter F. Martone (pmarton@mailbox.bgsu.edu) has written some
  485.       instructions for making a Linux shared library for GLUT. You can grab
  486.       the instructions for doing so from
  487.       http://pizza.bgsu.edu/cgi-bin/cgiwrap/~pmarton/makeMainIndex
  488.  
  489. --
  490.  
  491. Q25:  What is new in GLUT 3.2?
  492.  
  493. A25:  Like GLUT 3.1, GLUT 3.2 is a maintence release.  Along with bug
  494.       fixes to the core GLUT library, many new GLUT example programs
  495.       have been added.  The portability of the examples has been
  496.       improved so that most should build using Windows 95 and NT. 
  497.       Also, GLUT API man pages are now included.  See the CHANGES file
  498.       included in the distribution for more details.
  499.  
  500. --
  501.  
  502. Q26:  I've heard GLUT 3.2 has man pages.  How do I use them?
  503.  
  504. A26:  Please see the README.man file for details.  The easiest way for
  505.       SGI users to get the man pages is to install the "glut_dev.man.glut"
  506.       subsystem included with the pre-compiled SGI GLUT images.
  507.  
  508. --
  509.  
  510. Q27:  What is the MESA_SWAP_HACK in GLUT 3.2?  How does it help Mesa
  511.       users avoid excessive window redraws?
  512.  
  513. A27:  The GLX specification states that the state of a window's back
  514.       color buffer after a glXSwapBuffers is undefined.  However, the
  515.       freeware Mesa implementation of the OpenGL API always leaves
  516.       the back buffer with its previous contents (ie, it simply
  517.       "copies" the back buffer contents to the front buffer).
  518.  
  519.       Because Mesa lacks hardware acceleration and is often slow to
  520.       redraw a window, this presents the opportunity to speed
  521.       redrawing a window damaged by window system interactions by
  522.       simply calling glXSwapBuffers again.
  523.  
  524.       If you set the MESA_SWAP_HACK enviornment variable, GLUT 3.2
  525.       will try to repair double buffered windows not otherwise
  526.       needing a redisplay because of glutPostRedisplay by calling
  527.       glXSwapBuffers when Mesa is the OpenGL implementation being
  528.       used and the last display callback called glutSwapBuffers.
  529.  
  530.       In general, this means if you see MESA_SWAP_HACK when using
  531.       Mesa, double buffered GLUT programs will redraw very quickly
  532.       after being damaged but still operate well if they've been
  533.       correctly written to use glutPostRedisplay to trigger
  534.       application required redraws.
  535.  
  536.       I encourage all Mesa users to set the MESA_SWAP_HACK environment
  537.       variable. 
  538.  
  539. --
  540.  
  541. Q28:  I try to run the examples in progs/advanced but they don't work
  542.       for lack of image files.  Where can I get those files?
  543.  
  544. A28:  Yes, the image files these examples use are large and were
  545.       seperated out from the main GLUT source code distribution.
  546.       Get the glut_data.tar.gz file from where you got your
  547.       GLUT distribution.  Untar these data files over your glut
  548.       distribution so the "data" directory is at the same level
  549.       as "progs".  Then do a "make links" in the progs/advanced
  550.       directory to make symbolic links.
  551.  
  552.       See the progs/advanced/README file for more details.
  553.  
  554. --
  555.  
  556. Q29:  Why doesn't GLUT programs compiled on IRIX 6.4 or 6.3 work
  557.       earlier releases?
  558.  
  559. A29:  First, SGI never guarantees that an executable built on a later
  560.       IRIX release will work on an earlier release. Sometimes it works;
  561.       more often than not it does not. GLUT takes advantage of a new X
  562.       optimization in IRIX 6.3 called "fast atoms". This optimization
  563.       lets X clients determine common atom values without an X server
  564.       round-trip.  This helps X performance.
  565.  
  566.       If you compile the GLUT library on an IRIX 6.3 or IRIX 6.4
  567.       machine, the library will support fast atoms. This will mean that
  568.       if you run executables linked against the "fast atom enabled"
  569.       version of the GLUT library, you'll get a run-time link error
  570.       saying something like:
  571.  
  572.       17062:glut_example: rld: Fatal Error: attemped access to
  573.       unresolvable symbol in projtex: _XSGIFastInternAtom
  574.  
  575.       Do not be alarmed. If you want, you can recompile the GLUT
  576.       library with the -DNO_FAST_ATOMS and get a version of the library
  577.       that doesn't have the support so that GLUT executables built with
  578.       a library compiled without "fast atoms" can work on earlier IRIX
  579.       releases. Note that even if you do compile with -DNO_FAST_ATOMS,
  580.       there is still no guarantee that an IRIX executable compiled on a
  581.       newer release will actually work on an older release (but at
  582.       least you'll have a chance!).
  583.  
  584.       Note that the precompiled images lack "fast atoms" support so
  585.       they will work fine with IRIX releases before IRIX 6.3 and 6.4.
  586.  
  587. --
  588.  
  589. Q30:  Can I get a version of GLUT for the Power Macintosh?
  590.  
  591. A30:  Conix Graphics has released a port of GLUT
  592.       3.2 I believe.  Try checking the Conix Graphics web site
  593.       http://www.conix3d.com for current info.
  594.  
  595. --
  596.  
  597. Q31:  What is new in GLUT 3.4?
  598.  
  599. A31:  GLUT 3.4 is an incremental release. An Ada binding for SGI
  600.       machines is included along with an Ada example.  Many new sample
  601.       programs. Several such as dinoshade.c demonstrate real-time
  602.       rendering techniques relevant for games. Examples using Sam
  603.       Leffler's libtiff library for loading, drawing and writing TIFF
  604.       image files. GLUT version of the facial animation "geoview"
  605.       decibed in the Parke and Water's book "Computer Facial
  606.       Animation". New API interfaces to be made part of the GLUT 4 API
  607.       update (not yet fully finalized though). glutInitDisplayMode for
  608.       example. Improved portability and a few bug fixes.
  609.  
  610. --
  611.  
  612. Q32:  I installed SGI's Cosmo3D beta and GLUT, and I'm having problems
  613.       compiling GLUT programs.  What gives?
  614.  
  615. A32:  Unfortunately, SGI's Cosmo3D beta images install a DSO for GLUT
  616.       (libglut.so) that does not fully implement the GLUT API and lacks
  617.       some of the newer GLUT 3.4 entrypoints as well.  The problem is
  618.       that a DSO takes preferenc over an archive when you compile with
  619.       an option like "-lglut".  While the Cosmo3D beta installs a
  620.       libglut.so, my GLUT distribution and images only build and
  621.       install an archive.  There are a couple of solutions:
  622.  
  623.       1)  Explicitly link your GLUT programs with libglut.a (the
  624.       archive version of GLUT).  For example, put "/usr/lib/libglut.a"
  625.       on your compile line instead of "-lglut".
  626.  
  627.       2)  You can convert the GLUT 3.4 archive into a DSO:
  628.  
  629.         su
  630.         cd /usr/lib
  631.         mv libglut.so libglut.so.cosmo
  632.         cc -32 -o libglut.so -shared -all libglut.a
  633.         cd /usr/lib32
  634.         mv libglut.so libglut.so.cosmo
  635.         cc -n32 -o libglut.so -shared -all libglut.a
  636.  
  637.       The new DSO generated from the GLUT 3.4 DSO should be
  638.       compatible with the old Cosmo version.  This will mean that
  639.       all the GLUT programs you build will need the libglut.so on
  640.       the machine they run on.
  641.  
  642.       3)  Remove the Cosmo3D beta.
  643.  
  644. --
  645.  
  646. Q33:  What is new in GLUT 3.5?
  647.  
  648. A33:  The most significant change with GLUT 3.5 is unifying the X
  649.       Window System and Win32 versions of GLUT into a single source
  650.       code distribution.  Henk Kok contributed several cool new demos
  651.       (rollercoaster, chess, opengl_logo). All the demos build cleanly
  652.       under Win32. Lots of bug fixes.  Interesting new OpenGL rendering
  653.       techniques are demonstrated in a number of new examples:
  654.       movelight, dinoshade, halomagic, rendereps, movelight, shadowfun,
  655.       torus_test, underwater, texfont, reflectdino.
  656.  
  657. --
  658.  
  659. Q34:  How do I use the precompiled Win32 GLUT DLLs with Borland compilers?
  660.  
  661. A34:  The "implib" command should let you generate a GLUT.LIB that works
  662.       with Borland compilers from the precompiled GLUT.DLL  Here is an
  663.       example:
  664.  
  665.         C:\>implib C:\GLUT\LIB\GLUT.LIB C:\WINDOWS\SYSTEM\GLUT.DLL
  666.  
  667.       After this, then link C:\GLUT\LIB\GLUT.LIB to your project
  668.       
  669.       Suggested by Carter <carter@extremezone.com>.
  670.  
  671. --
  672.  
  673. Q35:  Are there any C++ wrappers for GLUT?
  674.  
  675. A35:  Yes, George Stetten (stetten@acpub.duke.edu) of Duke University has
  676.       made available the GlutMaster C++ wrapper classes.  See:
  677.  
  678.     http://www.duke.edu/~stetten/GlutMaster/GlutMaster.html
  679.     http://www.duke.edu/~stetten/GlutMaster/README.txt
  680.  
  681. --
  682.  
  683. Q36:  How do you avoid the Console window appearing when you compiler a
  684.       Win32 GLUT application with Microsoft compilers?
  685.  
  686. A36:  Try using the following Microsoft Visual C compiler flags:
  687.  
  688.     /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
  689.  
  690.       These are linker options... if main or wmain are defined, MSVC
  691.       build a CONSOLE app by default; hence the need for
  692.       /SUBSYSTEM:WINDOWS. if /SUBSYSTEM:WINDOWS is defined, MSVC
  693.       expects WinMain or wWinMain to be defined; hence the need to
  694.       /ENTRY:mainCRTStartup (eg the entry point is the usual C main).
  695.  
  696.       stdout/stderr are [apparently] not "attached"; output via printf
  697.       is simply "eaten" unless redirected at the command-line or by a
  698.       parent program.
  699.  
  700.       Information thanks to Jean-David Marrow (jd@riverbed.com).
  701.  
  702. --
  703.  
  704. Q37:  What is new in GLUT 3.6?
  705.  
  706. A37:  GLUT 3.6 adds/improves the following:
  707.  
  708.       o  Win32 GLUT performance improvements.
  709.  
  710.       o  Win32 GLUT confromance improvements.
  711.  
  712.       o  Linas Vepstas's GLE Tubing & Extrusions Library is
  713.      included with GLUT, including nroff man pages and
  714.      demo programs.
  715.  
  716.       o  More GLUT-based OpenGL demos and examples (and bug
  717.      fixes to existing demos and examples).
  718.  
  719.       o  glutPostWindowRedisplay and glutPostWindowOverlayRedisplay
  720.      entry points added for posting redisplays on non-current
  721.      windows (for faster multi-window updates).
  722.  
  723.       o  Bug fixes and minor functionality improvements to Tom Davis's
  724.      micro-UI GLUT-based user interface toolkit.
  725.  
  726.       See the "CHANGES" file that accompanies GLUT 3.6 for a fuller
  727.       list of changes.
  728.  
  729. --
  730.  
  731. Q38:  On my IRIX 6.3 SGI O2 workstation, why do I get errors about
  732.       "glXChannelRectSyncSGIX" being unresolved building certain GLUT
  733.       examples?
  734.  
  735. A38:  The original IRIX 6.3 release for the O2 workstation accidently
  736.       advertised support for the dynamic video resize extension supported
  737.       on SGI's high-end InfiniteReality graphics system.  This confuses
  738.       GLUT into providing its dynamic video resize sub-API.
  739.  
  740.       This problem is fixed by patch 1979 (and its successor patches).
  741.       Because patch 1979 (and its successor patches) also help O2's
  742.       OpenGL rendering performance, I strongly recommend requesting
  743.       the latest O2 OpenGL patch from SGI customer support.
  744.  
  745.       Once the patch is installed, your build errors will be resolved.
  746.  
  747. --
  748.  
  749. Q39:  Using GLUT with Microsoft OpenGL 1.1 and compiling GLUT with
  750.       Borland compilers causes GLUT applications to generates floating
  751.       point exceptions.  What can be done?
  752.  
  753. A39:  Under certain conditions (e.g. while rendering solid surfaces
  754.       with lighting enabled) MS libraries cause some illegal operations
  755.       like floating point overflow or division by zero. The default
  756.       behaviour of Microsoft compilers is to mask (ignore) floating
  757.       point exceptions, while Borland compilers do not.  A function of
  758.       Borland run-time library allows to mask exceptions.  Modify
  759.       glut_init.c by adding the following lines to the function
  760.       __glutOpenWin32Connection.
  761.  
  762. #ifdef __BORLANDC__
  763. #include <float.h>
  764.   _control87(MCW_EM,MCW_EM);
  765. #endif
  766.  
  767.       With this modification, compiling the GLUT library with your
  768.       Borland compilers and using GLUT with Microsoft OpenGL should
  769.       work fine.
  770.  
  771.       GLUT 3.7 will have this change already included in the GLUT
  772.       library source code distribution.
  773.  
  774.       This advice comes from Pier Giorgio Esposito (mc2172@mclink.it).
  775.  
  776. --
  777.  
  778. Q40:  Using GLUT with SGI OpenGL for Windows and compiling with
  779.       Borland compilers results in linking problems.  What can be
  780.       done?
  781.  
  782. A40:  Some care must be taken when linking GLUT.DLL or programs
  783.       that use it with Borland compilers.  The import library
  784.       IMPORT32.LIB already contains the functions exported by
  785.       the Microsoft OpenGL libraries, thus SGI OpenGL import
  786.       libraries must be listed _before_ import32 in the Borland
  787.       tlink command line.
  788.  
  789.       This advice comes from Pier Giorgio Esposito (mc2172@mclink.it).
  790.  
  791. --
  792.  
  793. Q41:  What is GameGLUT?
  794.  
  795. A41:  GameGLUT is a set of API extension to GLUT to be released in
  796.       GLUT 3.7.  These extensions provide keyboard release callbacks,
  797.       disabling of keyboard auto repeat, joystick callbacks, and full
  798.       screen resolution setting.
  799.  
  800. --
  801.  
  802. - Mark
  803.